package g11.testdao;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import g11.dao.DAOException;
import g11.dao.DrugDAO;
import g11.dao.DrugDAOImpl;
import g11.model.Drug;

import org.junit.Test;

public class testDrugDao {

	@Test
	public void testDrugCRUD() throws DAOException {
		// initiate object
		Drug drug = new Drug();
		drug.setDrugName("Advil");
		Byte type = 1;
		drug.setType(type);
		// test create
		DrugDAO drugDao = new DrugDAOImpl();
		drugDao.createDrug(drug);
		Drug retrievedDrug = new Drug();
		retrievedDrug = drugDao.getDrugByName(drug.getDrugName());
		assertNotNull(retrievedDrug);
		assertEquals(retrievedDrug.getDrugName(), drug.getDrugName());
		retrievedDrug = drugDao.getDrugById(retrievedDrug.getDrugId());
		assertNotNull(retrievedDrug);
		assertEquals(retrievedDrug.getDrugName(), drug.getDrugName());
		// test update
		retrievedDrug.setDrugName("Tylenol");
		drug.setDrugName("Tylenol");
		drugDao.updateDrug(retrievedDrug);
		retrievedDrug = drugDao.getDrugByName(retrievedDrug.getDrugName());
		assertNotNull(retrievedDrug);
		assertEquals(drug.getDrugName(), retrievedDrug.getDrugName());
		// test delete
		drugDao.deleteDrug(retrievedDrug);
		retrievedDrug = drugDao.getDrugById(retrievedDrug.getDrugId());
		assertNull(retrievedDrug);

	}

}
